$Description$
求两条途径点数尽可能多的从$1$到$n$的不相交路线($1,n$除外)
$Solution$
对于每个点$a~$拆成$a_1~$和$a_2$两个点,两个点之间的容量为$1$,边权为$1$,(因为每个点只能选一次,每选一个点可以对答案造成$1$的贡献) (若$a$为$1$或$n$容量应为$2$,因为这两个点可以选$2$次)
对于每条从$u$到$v$的边,从$u_2$向$v_1$建一条容量为$1$,边权为$0$的边(因为每条边只能选一次,选边并不会对答案造成影响)
最后从源点$s$向$a_1$建一条容量为$2$,边权为$0$,的边
从$n_2$向汇点建一条容量为$2$,边权为$0$的边
跑最大费用最大流即可
对于输出城市,进行两遍$dfs$,
第一次$dfs$找到一条$1$到$n$所有边的$flow$都为$0$的路径正序输出,
第二次$dfs$找到另一条$1$到$n$所有边的$flow$都为$0$的路径倒序输出(这次$n$不输出)
$Code$
1 |
|